package com.ytjj.qmyx.admin.model.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author jiawei
 * @date 2023年11月13日 10:35
 * @describe 报销单详情实体
 */
@Data
public class ReiOrderRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;

    /**
     * 付款人名字
     *
     * @mbg.generated
     */
    private String reimburserName;

    /**
     * 提交人名字
     *
     * @mbg.generated
     */
    private String createUser;

    /**
     * 客户支付凭证
     *
     * @mbg.generated
     */
    @NotBlank(message = "客户支付凭证不能为空")
    private String freightPaymentProof;

    /**
     * 报销凭证
     *
     * @mbg.generated
     */
    private String reimbursementProof;

    /**
     * 付款时间
     *
     * @mbg.generated
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date reimbursementTime;

    /**
     * 申请报销金额
     *
     * @mbg.generated
     */
    private BigDecimal applyAmount;

    /**
     * 已报销金额
     *
     * @mbg.generated
     */
    private BigDecimal returnedAmount;

    /**
     * 财务备注
     *
     * @mbg.generated
     */
    private String financialRemarks;

    /**
     * 客服备注
     *
     * @mbg.generated
     */
    private String serviceRemarks;

    /**
     * 客户收款码
     *
     * @mbg.generated
     */
    private String customerCodeImg;

    /**
     * 客户收信息
     *
     * @mbg.generated
     */
    private String customerAccountInfo;

    /**
     * 关联的子订单
     */
    @NotNull
    private List<ReiOrderInfoResponses> reiOrderInfoResponses;

    /**
     * 关联的子订单项
     */
    @Data
    public static class ReiOrderInfoResponses {

        /**
         * 关联项id
         */
        private Integer id;

        /**
         * 报销单id
         *
         * @mbg.generated
         */
        private Integer reimbursementId;

        /**
         * 子订单号
         *
         * @mbg.generated
         */
        @NotBlank(message = "关联的子订单号不能为空!")
        private String childOrderNo;

        /**
         * 售后方式 1-退货，2-换货，3-补偿
         *
         * @mbg.generated
         */
        @NotNull(message = "售后方式不能为空!")
        private Integer afterSaleType;

        /**
         * 报销原因
         *
         * @mbg.generated
         */
        private String reason;

        /**
         * 费用承担方 1-仓库承担， 2-平台承担，3-客户承担
         *
         * @mbg.generated
         */
        private Integer payer;

    }


}
